package com.dream.house.service;

import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;

import cn.com.servyou.base.exception.ServiceException;
import cn.com.servyou.utils.Page;

import com.dream.house.dao.BuyDAO;
import com.dream.house.dao.RentDAO;
import com.dream.house.dao.ReturnDAO;
import com.dream.house.dao.RoomDAO;
import com.dream.house.entity.ReturnDTO;
import com.dream.house.utils.Constants;

/**
 * 执行审批动作<br>
 * 1、买房审批通过后，需要把房子的使用状态设置为已买；1-已购买<br>
 * 2、租房审批通过后，需要把房子的使用状态设置为已租；2-已租赁<br>
 * 3、退房审批通过后，需要把房子的使用状态设置为未使用；0-未使用<br>
 * <p>
 * 审批状态:0-未审批，1-未通过，9-已入库，5-入库锁定<br>
 */
public class ReturnService extends HouseBaseService {
	@Autowired
	private ReturnDAO returnDAO;
	@Autowired 
	private RoomDAO roomDAO;
	@Autowired
	private BuyDAO buyDAO;
	@Autowired
	private RentDAO rentDAO;
	
	@Override
	boolean check(Map<String, String> condition) throws ServiceException {
		
		return returnDAO.check(condition);
	}
	
	public boolean saveReturn(ReturnDTO dto) throws ServiceException{
		dto.setReturn_id(returnDAO.getMaxId());
		return returnDAO.saveReturn(dto);
	}
	
	public boolean updateReturn(ReturnDTO dto) throws ServiceException{
		return returnDAO.updateReturn(dto);
	}
	
	public boolean removeReturn(String id) throws ServiceException{
		return returnDAO.removeReturn(id);
	}
	
	public ReturnDTO getReturn(String id) throws ServiceException{
		return returnDAO.getReturn(id);
	}
	
	public Page findByPage(Map<String, Object> condition, int pageNo,
			int pageSize) throws ServiceException{
		
		return returnDAO.findByPage(condition, pageNo, pageSize);
	}
	
	/**
	 * 退房审批通过后，需要做如下事情:<br>
	 * 1、修改退房的审核状态：0-待审核，1-未通过，9-已通过
	 * 2、需要把房子的使用状态设置为未使用；0-未使用；<br>
	 * 3、需要把上一户的租房、购房状态设置为：1-已转让<br>
	 */
	public boolean grant(String id,String room_id, String status,String checkUser) throws ServiceException{
		String s=null;
		if(status.equals(Constants.CHECK_STATUS_PASSED)){//更新成功，并且为审核通过状态
			s="1";
			
			//2、需要把房子的使用状态设置为未使用；0-未使用；
			roomDAO.updateUseStatus(room_id, Constants.ROOM_SATUS_INIT);
			
			//3、需要把上一户的租房、购房状态设置为：1-已转让
			
			//记录状态变更为：1-》2（0-已申请，1-已生效，2-已转让）
			buyDAO.updateBuyStatus(room_id, Constants.STATUS_TRANSFERRED);
			
			//记录状态：1-》2（0-已申请，1-已生效，2-已转让）
			rentDAO.updateRentStatus(room_id, Constants.STATUS_TRANSFERRED);
			
		}
		
		//1、修改退房的审核状态
		return returnDAO.grant(id, status, checkUser,s);
	}
}
